//Hash表的结构,Hash表是基于数组和链表的符合数据类型，在数组中存放链表的表头。

import java.util.HashMap;
import java.util.Hashtable;

//hashmap和hashtable的区别：
//1、HashTableHash是同步的，HashMap默认不支持同步；
//
//2、HashTableHash是不允许null做键值和value的，而HashMap则允许有一个键值为null和多个value为null；
//
//3、HashMap与HashTable数组的扩容方式不一样，HashMap中内部数组的初始容量是16，使用达75%向上扩容，按2的指数扩容既16—32—64—128……，HashTable中的内部数组的初始容量是11，也是使用75%扩容，方式为（原容量*2+1）。
//需要用到同步时用HashTable，不需要同步时用HashMap。其实HashMap可以通过调用Collections的静态方法Collections.synchronizedMap(Map map)进行同步，所以尽量用HashMap吧，毕竟HashMap比较先进！
public class Difference {
    public static void main(String[] args) {
        HashMap<Integer, String> a=new HashMap<>();
        for(int i=0;i<10;i++){
            a.put(i,"s");
        }
        System.out.println(a);
        System.out.println("**************************");
        Hashtable<Integer,String> b=new Hashtable<>();
        for(int i=0;i<10;i++){
            b.put(i,"s");
        }
        System.out.println(b);
    }
}
